
//1995.统计特殊四元组
class Solution {
public:
    int countQuadruplets(vector<int>& nums) {
        //对等式进行变形: nums[d]-nums[c]=nums[a]+nums[b]
        //枚举右侧的nus[d]-nums[c],将左边所有的nums[a]+nums[b]进行统计

        int n=nums.size();
        unordered_map<int,int> m; //存储左边nums[a]+nums[b]的和
        m[nums[0]+nums[1]]++;

        int  ret=0;
        for(int c=2;c<n-1;c++)
        {
            for(int d=c+1;d<n;d++)  //枚举c右边的数据作为d
            {
                int need=nums[d]-nums[c];
                if(m.count(need)) ret+=m[need];
            }

            for(int j=0;j<c;j++)  //将c位置的数据添加到左边的哈希表中
            m[nums[j]+nums[c]]++;
        }
        return ret;
    }
};